#!/bin/bash

if [[ $(id -u) != 0 ]]; then
    echo "Please run as root or use sudo"
    exit 1
fi

PKGS=""

PKGS="${PKGS} astyle"
PKGS="${PKGS} automake"
PKGS="${PKGS} bash-completion"
PKGS="${PKGS} bc"

# ??
# PKGS="${PKGS} apparmor"

PKGS="${PKGS} bison"
PKGS="${PKGS} build-essential"

PKGS="${PKGS} cpu-checker"
PKGS="${PKGS} ccache"
PKGS="${PKGS} cflow"

PKGS="${PKGS} cloc"
PKGS="${PKGS} sloccount"

PKGS="${PKGS} cmake"
PKGS="${PKGS} colordiff"
PKGS="${PKGS} coreutils"
PKGS="${PKGS} cpio"
PKGS="${PKGS} cppcheck"
PKGS="${PKGS} curl"
PKGS="${PKGS} debootstrap"
PKGS="${PKGS} device-tree-compiler"
PKGS="${PKGS} dos2unix"
PKGS="${PKGS} e2fsprogs"
PKGS="${PKGS} erofs-utils"
PKGS="${PKGS} expect"

PKGS="${PKGS} exuberant-ctags"
PKGS="${PKGS} universal-ctags"
PKGS="${PKGS} cscope"

# PKGS="${PKGS} libgtest-dev"
# PKGS="${PKGS} libgmock-dev"
# PKGS="${PKGS} lcov"
# PKGS="${PKGS} gcovr"

PKGS="${PKGS} ffmpeg"

PKGS="${PKGS} flex"
PKGS="${PKGS} gawk"
PKGS="${PKGS} gcc"
# PKGS="${PKGS} cgdb"
PKGS="${PKGS} gdb-multiarch"
PKGS="${PKGS} genromfs"

PKGS="${PKGS} git"
PKGS="${PKGS} git-email"
PKGS="${PKGS} msmtp"

PKGS="${PKGS} global"
PKGS="${PKGS} gnutls-dev"

PKGS="${PKGS} indent"
PKGS="${PKGS} iputils-ping"
PKGS="${PKGS} kmod"

PKGS="${PKGS} lsof"

PKGS="${PKGS} libconfuse-dev"
PKGS="${PKGS} libgit2-dev"
PKGS="${PKGS} libjson-glib-dev"

PKGS="${PKGS} liblz4-tool"
PKGS="${PKGS} libncurses-dev"
PKGS="${PKGS} libpixman-1-dev"
PKGS="${PKGS} libmpc-dev"

PKGS="${PKGS} libpython3-dev"

PKGS="${PKGS} libsdl1.2-dev"
PKGS="${PKGS} libsdl2-dev"

PKGS="${PKGS} libssl-dev"
PKGS="${PKGS} libtool"
PKGS="${PKGS} libudev-dev"
PKGS="${PKGS} libelf-dev"

PKGS="${PKGS} lzma-alone"
PKGS="${PKGS} lzop"
PKGS="${PKGS} make"
PKGS="${PKGS} minicom"
PKGS="${PKGS} moreutils"
PKGS="${PKGS} mount"
PKGS="${PKGS} mtd-utils"
PKGS="${PKGS} mtools"

## Debian 11
PKGS="${PKGS} netcat"
## Debian 12
PKGS="${PKGS} ncat"

PKGS="${PKGS} ninja-build"
PKGS="${PKGS} net-tools"
PKGS="${PKGS} openssl"

## unaviable for debian 12
PKGS="${PKGS} python2.7"

PKGS="${PKGS} pkg-config"
PKGS="${PKGS} python-is-python3"
PKGS="${PKGS} python3"
PKGS="${PKGS} python3-dev"
PKGS="${PKGS} python3-venv"
PKGS="${PKGS} python3-pip"
PKGS="${PKGS} python3-setuptools"
PKGS="${PKGS} python3-wheel"
PKGS="${PKGS} python3-sphinx"
PKGS="${PKGS} python3-virtualenv"

## ctools/cgraph
PKGS="${PKGS} graphviz"
PKGS="${PKGS} libgraphviz-dev"
PKGS="${PKGS} python3-pycparser"
PKGS="${PKGS} python3-pygraphviz"
PKGS="${PKGS} cython3"

PKGS="${PKGS} sysstat"

## atf optee_os
PKGS="${PKGS} python3-cryptography"
PKGS="${PKGS} python3-pyelftools"

PKGS="${PKGS} qemu-system-arm"
PKGS="${PKGS} qemu-system-misc"
PKGS="${PKGS} qemu-user"
PKGS="${PKGS} qemu-user-static"
PKGS="${PKGS} binfmt-support"

PKGS="${PKGS} rsync"
PKGS="${PKGS} sshpass"
PKGS="${PKGS} sparse"
PKGS="${PKGS} swig"
PKGS="${PKGS} parted"
PKGS="${PKGS} dosfstools"
PKGS="${PKGS} fdisk"
PKGS="${PKGS} gdisk"
PKGS="${PKGS} imagemagick"
PKGS="${PKGS} ipython3"
PKGS="${PKGS} udev"
PKGS="${PKGS} zstd"

PKGS="${PKGS} tree"
PKGS="${PKGS} u-boot-tools"
PKGS="${PKGS} util-linux"
## for optee client
PKGS="${PKGS} uuid-dev"

PKGS="${PKGS} vim"
PKGS="${PKGS} wget"
PKGS="${PKGS} xxd"
PKGS="${PKGS} zip"

## linux-headers or pve-headers
PKGS="${PKGS} linux-headers-amd64"
PKGS="${PKGS} linux-headers-$(uname -r)"
## for LXC in PVE
PKGS="${PKGS} pve-headers-$(uname -r)"

PKGS="${PKGS} tig"

## simg2img or android-sdk-libsparse-utils
PKGS="${PKGS} simg2img"
PKGS="${PKGS} android-sdk-libsparse-utils"

PKGS="${PKGS} tmux"
## qemu riscv
PKGS="${PKGS} opensbi"
## rt-thread
PKGS="${PKGS} scons"
PKGS="${PKGS} uuid"
PKGS="${PKGS} u-boot-qemu"

SUCCESSED=""
FAILED=""

for pkg in ${PKGS}; do
    echo "Installing ${pkg}"
    apt-get install -y ${pkg} \
        && SUCCESSED="${SUCCESSED} ${pkg}" \
        || FAILED="${FAILED} ${pkg}"
done

echo "SUCCESSED: " ${SUCCESSED}
echo "FAILED: " ${FAILED}
